textview: give application developers access to RTL and LTR context
authorChristian Hergert <chergert@redhat.com>
Sat, 19 Jun 2021 19:20:23 +0000 (12:20 -0700)
committerChristian Hergert <chergert@redhat.com>
Sat, 19 Jun 2021 19:28:18 +0000 (12:28 -0700)
This allows developers to modify the pango context that is used when
rendering text within the text view.

Such access can be useful to alter how rounding occurs with API such as
pango_context_set_round_glyph_positions() and is needed by GtkSourceView
for proper placement of glyphs within the overview map.

gtk/gtktextview.c
gtk/gtktextview.h

index 669312faa5e55a41b9a5091ceab273ce71ffacc1..5bf134302c2190cabe32979ee83cefb3459fd32a 100644 (file)
@@ -9963,3 +9963,49 @@ gtk_text_view_buffer_notify_undo (GtkTextBuffer *buffer,
                                  (gtk_text_view_get_editable (view) &&
                                   gtk_text_buffer_get_can_undo (buffer)));
 }
+
+/**
+ * gtk_text_view_get_ltr_context:
+ * @text_view: a `GtkTextView`
+ *
+ * Gets the `PangoContext` that is used for rendering LTR directed
+ * text layouts.
+ *
+ * The context may be replaced when CSS changes occur.
+ *
+ * Returns: (transfer none): a `PangoContext`
+ *
+ * Since: 4.4
+ */
+PangoContext *
+gtk_text_view_get_ltr_context (GtkTextView *text_view)
+{
+  g_return_val_if_fail (GTK_IS_TEXT_VIEW (text_view), NULL);
+
+  gtk_text_view_ensure_layout (text_view);
+
+  return text_view->priv->layout->ltr_context;
+}
+
+/**
+ * gtk_text_view_get_rtl_context:
+ * @text_view: a `GtkTextView`
+ *
+ * Gets the `PangoContext` that is used for rendering RTL directed
+ * text layouts.
+ *
+ * The context may be replaced when CSS changes occur.
+ *
+ * Returns: (transfer none): a `PangoContext`
+ *
+ * Since: 4.4
+ */
+PangoContext *
+gtk_text_view_get_rtl_context (GtkTextView *text_view)
+{
+  g_return_val_if_fail (GTK_IS_TEXT_VIEW (text_view), NULL);
+
+  gtk_text_view_ensure_layout (text_view);
+
+  return text_view->priv->layout->rtl_context;
+}
index 2b412e65008f62e74f10ac914825d8000f75a7ce..325077a8719d27312545d2f0f5fd1799bef219d6 100644 (file)
@@ -427,6 +427,10 @@ void             gtk_text_view_set_extra_menu         (GtkTextView      *text_vi
                                                        GMenuModel       *model);
 GDK_AVAILABLE_IN_ALL
 GMenuModel *     gtk_text_view_get_extra_menu         (GtkTextView      *text_view);
+GDK_AVAILABLE_IN_ALL
+PangoContext    *gtk_text_view_get_rtl_context        (GtkTextView      *text_view);
+GDK_AVAILABLE_IN_ALL
+PangoContext    *gtk_text_view_get_ltr_context        (GtkTextView      *text_view);
 
 G_END_DECLS